/*
    异步方法操作文件的步骤：
    1.打开文件
    fs.open(path[, flags[, mode]], callback)
        - path 文件的路径
        - flags 打开文件的方式（默认值是r，表示读文件，设为w，表示为写）
        - callback 回调函数 
            - 回调函数有两个参数：err（错误信息，没有错误返回null），fd（成功打开文件后的文件标识）
    2.向文件中写内容
    fs.write(fd, string[, position[, encoding]], callback)
        - fd 是文件的标识
        - string 是写入的内容
        - position 写入文件的起始位置
        - callback 回调函数 
            - 回调函数有三个参数：err（错误信息，没有错误返回null） written（写的长度） string（写的内容）
    3.关闭
    fs.close(fd, callback)
        - fd 是文件的标识
        - callback 回调函数 
            - 回调函数里面只有一个参数：err（错误信息，没有错误返回null）
*/
// 导入文件系统对象
let fs = require('fs')
//我的打开文件的方法
function myOpen(path,flags='w'){
    //返回的是一个Promise对象
    return new Promise((resolve,reject)=>{
        //1.打开文件
        fs.open(path,flags,function(err,fd){
            if(!err){
                console.log('文件打开成功~');
                resolve(fd)  //没有错误，通过resolve对象返回结果
            }else{
                reject(err)  //有错误，通过reject对象返回错误
            }
        })
    })
}

//我的写入文件内容的方法
function myWrite(fd,string){
    //返回的是一个Promise对象
    return new Promise((resolve,reject)=>{
        fs.write(fd,'异步方式写入内容~~',function(err){
            if(!err){
                console.log('文件写入成功~');
                resolve(fd)
            }else{
                reject(err)
            }
        })
    })
}

//我的关闭文件内容的方法
function myClose(fd){
    return new Promise((resolve,reject)=>{
        fs.close(fd,function(err){
            if(!err){
                console.log('文件关闭成功~');
                resolve()
            }else{
                reject(err)
            }
        })
    })
}

myOpen('hello3.txt','w')
.then(r=>{
   return myWrite(r,'欢迎使用~~')
})
.then(r=>{
    myClose(r)
})

console.log('HelloWorld');



